test(gc): retire the obsolete #7254 pin in gc_instrument_smoke.sh — #4644 reclassified the reproducer (output byte-identical to node under the pairing); positive live arm instead - #9975
Conversation
Replace arm 5b's expected verifier panic with positive correctness and liveness checks for the retained-growth workload. Compare Perry's stdout byte-for-byte with Node, require a successful exit, and require copied objects so the evacuation verifier cannot pass vacuously. Claude-Session: https://claude.ai/code/session_011dhBmdn4vGgNibjo3oZqTo
|
Warning Review limit reachedNext included review available in 59 minutes. View limit detailsLimit details: You’ve used all 8 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Landed on The three non-passing gates are accounted for: public-baseline is pre-existing on |
Tooling/test only:
scripts/gc_instrument_smoke.sharm 5b and one changelog line. Fixes the gc-stress fan-in red on main (issue #9974, item 4).Why
Arm 5b pinned #7254's reproducer (
test-files/test_gap_repsel_p4a3_ptr_numarray.ts) as "must still panic withstale forwarded pointerunder PERRY_GC_SCHEDULE_RATE=1 + PERRY_GC_VERIFY_EVACUATION". It stopped panicking, and the fan-in has been red since 616a2cb. Agit bisect runwith the smoke script itself as the predicate (release build + the script per step, no skips) names the first silent commit: 9f790a5 (#4644, "allow retained array-growth aliases in copying verification") — the copying-minor verifier now admits a forwarded pointer whose both ends are retained growth arrays, which is exactly the Ptr growth alias #7254's reproducer exercises. #4644's changelog calls the old abort a false positive; this PR proves it for the reproducer: under the pairing the program's stdout is byte-identical to node's and the run is live (12,528 objects copied under the verifier).What changes
The pinned-regression block is replaced by a positive arm with the same non-vacuity discipline: the #7254 file under the pairing must exit 0, print node's output, and copy > 0 objects under the verifier (the new line:
correct output vs node, exit 0, 12528 objects copied under the verifier (live retained-growth coverage)). Two sentences of history stay in the script (#7254 → #4644 → this arm). The file remains in the ordinary repsel matrix corpus (test-parity/gc_repsel_corpus.txt). Arms 1–4, 5a and 6 are untouched.Verified locally (macOS arm64)
Full
scripts/gc_instrument_smoke.shrun: rc 0 with the new arm reporting;bash -n, diff-check, file-size clean. On Linux the fan-in's smoke step is the proof (local ladder).Smoke recipe note for future readers: the script exports
PERRY_GC_SCHEDULE_ALLOC_KB=0andPERRY_NO_AUTO_OPTIMIZE=1globally; a hand-copied arm-5 recipe without them is silent on every tree.https://claude.ai/code/session_011dhBmdn4vGgNibjo3oZqTo